package com.mall.admin.controller;

import com.mall.admin.service.PmsProductService;
import com.mall.commons.utils.PageResult;
import com.mall.commons.utils.R;
import com.mall.domain.PmsProduct;
import com.mall.dto.ProductDto;
import com.mall.dto.ProductListDto;
import com.mall.vo.ProductVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/product")
public class PmsProductController {

    @Autowired
    private PmsProductService pmsProductService;

    //创建商品
    @PostMapping("/create")
    public R create(@RequestBody ProductDto dto){
        pmsProductService.create(dto);
        return R.success("创建商品",null);
    }

    //查询商品
    @GetMapping("/list")
    public R list(ProductListDto dto){
        PageResult pageResult = pmsProductService.list(dto);
        return R.success("查询商品",pageResult);
    }

    //根据商品名称或货号模糊查询
    @GetMapping("/simpleList")
    public R simpleList(String keyword){
        List<PmsProduct> productList = pmsProductService.simpleList(keyword);
        return R.success("根据商品名称或货号模糊查询",productList);
    }

    //批量修改删除状态
    @PostMapping("/update/deleteStatus")
    public R updateDeleteStatus(List<Long> ids,Integer deleteStatus){
        pmsProductService.updateDeleteStatus(ids,deleteStatus);
        return R.success("批量修改删除状态",null);
    }

    //批量设为新品
    @PostMapping("/update/newStatus")
    public R updateNew(List<Long> ids,Integer newStatus){
        pmsProductService.updateNew(ids,newStatus);
        return R.success("批量设为新品",null);
    }

    //批量上下架商品
    @PostMapping("/update/publishStatus")
    public R updatePublish(List<Long> ids,Integer publishStatus){
        pmsProductService.updatePublish(ids,publishStatus);
        return R.success("批量上下架商品",null);
    }

    //批量推荐商品
    @PostMapping("/update/recommendStatus")
    public R updateRecommend(List<Long> ids,Integer recommendStatus){
        pmsProductService.updateRecommend(ids,recommendStatus);
        return R.success("批量推荐商品",null);
    }

    //批量修改审核状态
    @PostMapping("/update/verifyStatus")
    public R updateVerify(String detail,List<Long> ids,Integer verifyStatus){
        pmsProductService.updateVerify(detail,ids,verifyStatus);
        return R.success("批量修改审核状态",null);
    }

    //更新商品
    @PostMapping("/update/{id}")
    public R update(@RequestBody ProductDto dto){
        pmsProductService.update(dto);
        return R.success("更新商品",null);
    }

    //根据商品id获取商品编辑信息
    @GetMapping("/updateInfo/{id}")
    public R updateInfo(@PathVariable Long id){
        ProductVo vo = pmsProductService.updateInfo(id);
        return R.success("获取商品编辑信息",vo);
    }

}
